package com.ihy;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cache.annotation.EnableCaching;

/**
 * 项目测试启动类
 * <p>
 * EnableCaching注解:
 * 启用Spring的注释驱动缓存管理功能，类似于Spring的<cache:*>XML命名空间中的支持
 * <p>
 * SpringBootApplication注解:
 * ComponentScan + SpringBootConfiguration + EnableAutoConfiguration 注解的组合使用
 * <p>
 * ComponentScan注解：
 * 下面的注解@Service,@Repository,@Component,@Controller用来定义一个bean.
 * ComponentScan注解就是用来自动扫描被这些注解标识的类，最终生成ioc容器里的bean．
 * 可以通过设置@ComponentScan　basePackages，includeFilters，excludeFilters属性来动态确定自动扫描范围.
 * <p>
 * SpringBootConfiguration注解：
 * 这个注解的作用与@Configuration作用相同，都是用来声明当前类是一个配置类．可以通过＠Bean注解生成IOC容器管理的bean.
 * <p>
 * EnableAutoConfiguration注解：
 * EnableAutoConfiguration是springboot实现自动化配置的核心注解，通过这个注解把spring应用所需的bean注入容器中．
 * EnableAutoConfiguration源码通过@Import注入了一个ImportSelector的实现类
 * AutoConfigurationImportSelector, 这个ImportSelector最终实现根据我们的配置，动态加载所需的bean.
 */
@EnableCaching
@SpringBootApplication
public class IhyProjectApplication {

    public static void main(String[] args) {
        SpringApplication.run(IhyProjectApplication.class, args);
    }
}